package com.zrrd.network.tcp.client;

import java.io.*;
import java.net.Socket;
import java.util.ArrayList;

/**
 * @author WanJl
 * @version 1.0
 * @title Client03
 * @description 客户端将本地文件上传到服务器
 * @create 2023/10/22 16:43
 */
public class Client03 {

    /**
     * 上传文件的方法
     * @param host
     * @param port
     * @param filePath
     */
    public static void upload(String host,int port,String filePath) throws IOException{
        //创建客户端Socket
        Socket client = new Socket(host, port);

        //读取本地文件的流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath));

        //获取输出流，将从本地输入的数据， 输出到服务器
        BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
        int b;
        //连读带写
        while ((b=bis.read())!=-1){
            //通过网络，写入到服务器中
            bos.write(b);
        }
        //完成之后，强行刷新流
        bos.flush();
        //给服务一个结束标记，告诉服务器文件传输完成了。
        client.shutdownOutput();

        //获取来自服务器的反馈信息
        BufferedReader br =
                new BufferedReader(new InputStreamReader(client.getInputStream()));

        String line;
        while ((line=br.readLine())!=null){
            System.out.println(line);
        }
        bis.close();
        br.close();
        client.close();
    }

    public static void main(String[] args) throws IOException {
        upload("127.0.0.1",10010,"D:/zs.txt");
    }
}
